/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Validador;

import Beans.Horario;
import Beans.Jogador;
import Beans.Jogo;
import Beans.Usuario;
import Daos.JogadorDao;

/**
 *
 * @author williambartko
 */
public class ValidaJogador {

    public ValidaJogador(Jogador jogador) {
        this.confirmacao = jogador.getConfirmacao();
        this.jogo = jogador.getJogo();
        this.usuario = jogador.getUsuario();

        codErro = 0;
        validadorGenerico = new ValidadorGenerico();
        inicializaMensagensCampo();//inicializa mensagens de erro

    }
    private Integer confirmacao;
    private Jogo jogo;
    private Usuario usuario;
    int codErro;
    private ValidadorGenerico validadorGenerico;
    private String[] mensagensCampos = new String[3];

    public boolean validaJogo() {
        if (jogo == null) {
            codErro = 2;
            setaMensagemsDeErro(codErro);
            return false;
        }
        return true;
    }

    public boolean validaUsuario() {
        if (usuario == null) {
            codErro = 3;
            setaMensagemsDeErro(codErro);
            return false;
        }
        return true;
    }

    private void inicializaMensagensCampo() {
        mensagensCampos[0] = "Confirmacao valida";
        mensagensCampos[1] = "Jogo valido";
        mensagensCampos[2] = "Usuario valido";

    }

    public String[] getMensagensCampos() {

        return mensagensCampos;
    }

    private void setaMensagemsDeErro(int codErro) {
        switch (codErro) {
            case 1:
                mensagensCampos[0] = "##";
                break;
            case 2:
                mensagensCampos[1] = "Jogo inválido";
                break;
            case 3:
                mensagensCampos[2] = "Usuario inválido";
                break;
        }
    }

    public boolean validaTodosOsCampos() {
        if(validaJogo() &&
        validaUsuario()){
            return true;
        }
        else{
            return false;
        }
    }

    public void gravarDadosNoBanco() {

        validaTodosOsCampos();
        if (codErro == 0) { //se nao detectar nenhum problema, salva no banco
            new JogadorDao(new Jogador(confirmacao, usuario, jogo)).persist();
            System.out.println(" Jogador Salvo no banco!");
        }
        setaMensagemsDeErro(codErro);//seta mensagem de erro
        System.out.println(codErro);
    }

    public Jogador retornaObjetoValidado() {
        return new Jogador(confirmacao, usuario, jogo);
    }

    public static void main(String[] args) {


        ValidaJogador validaJogador = new ValidaJogador(null);

        validaJogador.gravarDadosNoBanco();

        for (int i = 0; i < validaJogador.getMensagensCampos().length; i++) {
            String campo[] = validaJogador.getMensagensCampos();
            System.out.println(campo[i]);
            System.out.println("===============================================");
        }

    }
}
